“Booting” refers to the process of starting a processor by loading the operating system code into the processor. This operating system code must be stored in a non-volatile data memory device. NAND flash devices are inexpensive and have other features that make them attractive for the use of storing boot code, but booting from NAND flash is very complicated due to the large variety of NAND flash vendors, page sizes, error correction code (ECC) requirements, block sizes, and other device-specific parameters. The uncertainty of how future NAND flash devices will be designed makes the use of NAND flash for storing boot code even more difficult to implement.